Objetivo: crear informes en formatos PDF y HTML.
El paquete rmarkdown ayuda a crear documentos que combinan código, resultados renderizados y texto. Estos documentos pueden ayudar a:
Reproducir tu análisis e informes
Comunicar tus resultados de manera más efectiva
Hacer ciencia de datos de manera interactiva
R Markdown puede renderizar documentos en PDF, HTML, Word, presentaciones, entre otros. Puedes leer el libro R Markdown: The Definitive Guide (en inglés).
Puedes instalar el paquete rmarkdown de la siguiente manera:
En caso de que desees renderizar documentos en formato PDF, necesitarás instalar LaTeX. Para este propósito, se recomienda TinyTeX https://yihui.name/tinytex/.
Los scripts de R tienen la extensión de archivo .R, mientras que los documentos de R Markdown tienen la extensión .Rmd. Una vez que el paquete rmarkdown esté instalado, podrás abrir un nuevo archivo Rmd de la siguiente manera:
File -> New File -> R Markdown
Cuando crees el documento, verás algo como esto:
El primer segmento del documento indica su información (por ejemplo, el título, autor y fecha) y características (por ejemplo, el formato de salida).
Puedes renderizar el archivo haciendo clic en el botón Knit en la parte superior del área de script. Por favor, guarda tu archivo como Test.Rmd.
El resultado es:
Por favor, ten en cuenta que tienes texto y código integrados en el mismo documento. Para agregar texto, simplemente escríbelo. Para agregar código, debes incrustarlo dentro de un bloque de código, que comienza y termina con tres acentos graves ```.
r indica el nombre del lenguaje de programación. Este bloque de código puede tener varias opciones que se deben agregar entre el lenguaje de programación (r) y el corchete de cierre (}).
Puedes insertar un nuevo bloque de código con el atajo de teclado Ctrl + Alt + I (OS X: Cmd + Option + I).
eval = FALSE evita que se ejecute el código. Solo se utilizará para fines de renderizado.
include = FALSE evita que el código y los resultados aparezcan en el archivo final. R Markdown aún ejecuta el código en el bloque y los resultados pueden ser utilizados por otros bloques.
echo = FALSE evita que el código, pero no los resultados, aparezcan en el archivo final. Esta es una forma útil de incrustar figuras.
message = FALSE evita que los mensajes generados por el código aparezcan en el archivo final.
warning = FALSE evita que las advertencias generadas por el código aparezcan en el archivo final.
fig.align alinea la figura al ‘center’, ‘right’ o ‘left’.
fig.cap = “…” agrega un título a los resultados gráficos.
Hay varios formatos disponibles en rmarkdown:
El texto en un documento de R Markdown se escribe en Markdown Pandoc.
itálicas: rodeadas de guiones bajos (_) o asteriscos
(*); e.g.,o, itálicas. itálicas.
negrita: rodeadas de dos guiones bajos (__) o
asteriscos (**); e.g., negrita.
subíndice: rodeado de virgulillas (~); e.g., palabrasubíndice.
superíndice: rodeado de acentos circunflejos (^); e.g., palabrasuperíndice.
código en línea: rodeado de acentos graves (`);
e.g., code.
Para agregar bibliografía, visita la sección 2.8 de Authoring Books with R Markdown.
Creemos un documento PDF simple como ejemplo y nombremoslo Random numbers.
---
title: "Random numbers"
author: "Oscar M. Baez-Villanueva"
date: "`r Sys.Date()`"
output: pdf_document
---Luego, podemos agregar un bloque de código para especificar que todo el código debe ser visible.
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Podemos agregar un poco de texto:
norm para generar una matriz de 60
valores aleatorios distribuidos normalmente con seis columnas:
```{r}
x <- matrix(rnorm(60), ncol = 6)
print(x)
```
Luego, un poco más de texto:
```{r}
vals <- as.numeric(x)
m <- mean(vals)
```
Además, podemos mostrar los valores almacenados en variables en el texto de la siguiente manera:
El valor promedio de estos números es: `r m`. Además,
`r max(vals)` es el valor máximo y
`r min(vals)` es el mínimo.
Finalmente, podemos utilizar la función boxplot para visualizar los datos:
```{r fig.align='center', fig.cap="Diagrama de caja de los números aleatorios"}
boxplot(x)
```
Leaflet es una biblioteca de JavaScript de código abierto ampliamente utilizada para mapas interactivos. El paquete leaflet te ayuda a integrar y controlar mapas Leaflet en R. Este paquete te permitirá renderizar datos espaciales y compartir los resultados de una manera muy interesante.
Por favor, instala el paquete leaflet.
Ahora, cárgalo:
Creemos un widget de mapa básico:
m <- leaflet()
m <- setView(m, lng = -99.179, lat = 21.801, zoom = 5)
m <- addTiles(m)
m <- addMarkers(m, lng = -99.179, lat = 21.801, popup = "Un lugar para visitar!")
mAdemás, podemos usar el operador pipe del paquete magrittr:
Existen varios temas de mapas agradables aquí.
Podemos agregar polígonos a los gráficos. Leamos el archivo de forma de una cuenca en Chile y su red de ríos con el paquete sf .
catch <- "C:/Data/Shapefile/Trancura_catchment.shp"
rivers <- "C:/Data/Shapefile/Trancura_rivers.shp"
catch <- read_sf(catch)
rivers <- read_sf(rivers)Grafiquemos los datos:
leaflet(width="100%") %>%
addTiles() %>%
addPolygons(data=catch, weight = 3, color = "blue", popup = ~ NOMBRE, group = "Cuenca") %>%
addPolygons(data=rivers, weight = 3, color = "cyan", group = "Rios") %>%
addLayersControl(
overlayGroups = c("Cuenca", "Rios"),
options = layersControlOptions(collapsed = FALSE)
)Usemos el paquete raster para importar las capas ráster, ya que leaflet todavía no es compatible con el paquete terra.
rfmep <- "../Data/L11_RMarkdown/Raster/RF-MEP_1990-2018_multiannual.tif"
mswep <- "../Data/L11_RMarkdown/Raster/MSWEPv2.8_1990-2018_multiannual.tif"
rfmep <- raster(rfmep)
mswep <- raster(mswep)
r <- stack(rfmep, mswep)
pal <- colorNumeric(c("#0C2C84", "#41B6C4", "#FFFFCC"), values(r),
na.color = "transparent")Para agregar archivos ráster:
leaflet(width="100%") %>%
addTiles() %>%
addRasterImage(r[[1]], colors = pal, opacity = 0.8, group = "RF-MEP") %>%
addRasterImage(r[[2]], colors = pal, opacity = 0.8, group = "MSWEPv2.8") %>%
addPolygons(data=catch, weight = 3, color = "blue", popup = ~ NOMBRE, group = "Cuenca") %>%
addPolygons(data=rivers, weight = 3, color = "cyan", group = "Rios") %>%
addLegend(pal = pal, values = values(r), title = "P [mm]") %>%
addLayersControl(
baseGroups = c("RF-MEP", "MSWEPv2.8"),
overlayGroups = c("Cuenca", "Rios"),
options = layersControlOptions(collapsed = FALSE),
)